001    /**
002     * Java Gui Builder - A library to build GUIs using an XML file.
003     * Copyright 2002, 2003 (C) François Beausoleil
004     *
005     * This library is free software; you can redistribute it and/or
006     * modify it under the terms of the GNU Lesser General Public
007     * License as published by the Free Software Foundation; either
008     * version 2.1 of the License, or (at your option) any later version.
009     *
010     * This library is distributed in the hope that it will be useful,
011     * but WITHOUT ANY WARRANTY; without even the implied warranty of
012     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013     * Lesser General Public License for more details.
014     *
015     * You should have received a copy of the GNU Lesser General Public
016     * License along with this library; if not, write to the Free Software
017     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
018     */
019    
020    package jgb.builder.utils;
021    
022    import java.io.PrintWriter;
023    import java.io.StringWriter;
024    
025    /**
026     * @since 0.2a
027     * @author Francois Beausoleil, <a href="mailto:fbos@users.sourceforge.net">fbos@users.sourceforge.net</a>
028     */
029    public class MethodCallException extends Exception {
030        private Throwable cause;
031    
032        public MethodCallException() {
033        }
034    
035        public MethodCallException(String message) {
036            super(message);
037        }
038    
039        public MethodCallException(Throwable cause) {
040            this.cause = cause;
041        }
042    
043        public MethodCallException(String s, Throwable cause) {
044            super(s);
045            this.cause = cause;
046        }
047    
048        public Throwable getCause() {
049            return cause;
050        }
051    
052        public String getMessage() {
053            if (cause != null) {
054                StringWriter sw = new StringWriter();
055                PrintWriter pw = new PrintWriter(sw, false);
056                pw.println(this.getClass().getName());
057                if (super.getMessage() != null) {
058                    pw.println(super.getMessage());
059                }
060                pw.print("Caused by: ");
061                cause.printStackTrace(pw);
062                pw.flush();
063                return sw.toString();
064            }
065    
066            return super.getMessage();
067        }
068    }